10 年前的我,是一位研究生
我所在的實驗室相當特別:走廊上聽見風扇高速運轉聲音,接近門口,可以感受到陣陣暖風。不開啟冷氣的時候,室內的溫度總是比室外高上 3 度。若是冷氣壞掉,沒有任何研究生想進來工作。
室內除了一些主機當作伺服器,還有一台計畫專用的大型伺服器。第一次看見這台主機雖然開心,心想能拿來做很多研究與應用,沒想到的是,後期的維護就讓當時我們吃足苦頭:
理所當然,後續交付專業的機房管理,才讓我們才鬆一口氣。但也不盡然全是壞事:多虧遇到這些有的沒的糟糕事,趁機學習了一些維運技能。
每年學校會清點財產,這些設備對負責的學生來說是一場災難 (高裝檢概念)。每年到了這個時候,除了清點之外,還需要想盡辦法多救活幾台主機,明年學弟、妹才有足夠資源可以使用。這段期間,假日窩在實驗室弄得髒兮兮的是常態,雖然辛苦,但也學到了額外的技能:清掃、盤點、重新組裝與進行報廢行政流程。
7 年前的我,在某公司擔任開發人員
某次機房疑似冷氣壞掉,必須打開機房房門散熱,散出的熱風正巧直吹我的座位,真讓人懷念。部分伺服器因為過熱無法運作,導致專案沒了測試環境,工程師只能在開發環境測試後,直接部屬至正式環境,系統品質掉了好幾成。過了幾天,冷氣修好了,伺服器卻出了問題。工程師們花了一段時間重新安裝與設定,才恢復了測試環境。
伺服器少了,申請虛擬機器越來越困難,但專案時程不會等你。沒有資源進行測試新架構,也沒有測試環境,除了降低產品品質,工程師態度也越來越故步自封:年輕時也沒有受什麼正規的訓練,沒發現自己在艱困的環境進行工作,認為這是正常的流程,且深怕改變帶來更高的成本。
沒多久,雲端服務逐漸普及,內部也有些雲端資源可以使用。身為工程師的我相當開心,想要爭取多些環境可以測試程式與系統架構,卻因為資源分配與管理限制下,難以取得使用權限。
所幸當初頗愛嘗試新事物,自掏腰包使用雲端服務,也搭上了社群資源,學習上算是順利。之後轉換工作期間,自己曾短暫接外包專案,這段期間雲端服務幫上很大的忙:客戶在尚未申請到正式主機的這幾個月,網站服務運作得非常好!
至今,雲端服務是我工作上不可或缺的一部分,無論是在開發、測試、研究或撰寫部落格。雲端服務的快速取得、高擴展性 與 不需維護伺服器(或簡單維護) 的優勢,讓我有更多的時間,專注於撰寫程式、測試架構、技術研究或撰寫文章。
原以為以上的故事僅是個人經歷…
在最近的一年,因為工作關係,跑了不同的企業,發現不少開發團隊面臨類似的問題。有些企業可能具有 **短期內擁有充裕的資金、緊迫時程壓力建立商業模式 與 沒有過去系統包袱 ** 的特性,已經嘗試透過雲端服務解決資源不足與維護成本的問題;有些企業則需要面臨資料安全、法規與繁雜的流程而有所顧慮。但更多情境是,企業不知道雲端服務能為開發/維運團隊帶來什麼好處 ?
無論是 Zero Downtime Deployment、處理網站高流量高併發 或 妥善的維運監控,各家雲端廠商皆有提供相對應的基本服務與架構。若您的系統在雲端上,發現系統能夠強化的部分相當多 (如:使用快取服務增加效能、透過監控功能進行自動擴展 或 透過防火牆提升系統安全性),那您可能需要檢視:
若有上述的答案多數為否定的,您的系統應該有相當大的包袱。另外,常常聽見客戶提到重構或重新調整架構是需要架構是需要花費大量成本,我們不願意負擔這個成本與風險,這讓我想起 Clean Architecture: A Craftsman's Guide to Software Structure and Design 所提到的匿名真實公司案例:
隨著產品不斷的更新與發佈,工程師團隊不段擴編,但以程式碼行數增長來看,產品越來越難以維護與變更。無論公司目前利潤多高,會隨著時間一點一滴被地被榨乾。到 Release 8 時,比 Release 1 的建構成本高了40倍。
"如果你認為好架構的代價是昂貴的,那不妨試試糟糕的架構。
Brian Foote and Joseph Yoder ──《Pattern Languages of Program Design 4》作者"
忽略的短期間轉型的成本,最終可能讓 開發團隊 難以釋出新功能,也讓 維運團隊 承受相當大的責任。最可怕是,時間一久導致團隊認知僵化:開發與維運就是這樣。
下面這問題是 Covid-19 疫情期間流傳的貼文,雖然有趣但也帶出既有的事實:
Who led the digital transformation of your company?
A) CEO
B) CTO
C) COVID-19
疫情發生後,許多組織為了確保企業能夠持續運作,開始執行 在家或分區工作。這項措施讓組織發現既有資源已經不敷使用,且短時間內也難以擴展;疫情雖然毀滅許多實體店家,但讓電商的業績持續成長[1]。面對天災人禍,企業被迫進行數位轉型,甚至直接將服務轉移至雲端,以減緩疫情所帶來的營運衝擊。疫情改變了世界的遊戲規則,也考驗著雲端服務的可用性與安全性。
這系列的文章除了介紹 Azure 服務,也會盡可能說明每項能解決什麼問題,讓讀者進行轉移之前,可以仔細評估為什麼要使用 Azure 服務,並了解它將帶來什麼好處。若文章內有任何錯誤或建議,也請各位先進不吝提出,謝謝。